//给你一个整型数组，数组中没有重复元素请你从数组中找出所有和为特定值的一对整数，输出它们的下标。




    function twoSum(nums,target) {
        let map = new Map();
        let resultList = [];
        for (let i = 1; i < nums.length; i++) {
            map.set(nums[i], i);
        }
        for (let i = 0; i < nums.length; i++) {
            let d = target - nums[i];
            if (map.has(d) && map.get(d) != i) {
                resultList.push([nums[i], d]);
                //为防止找到重复的元素对，匹配后从哈希表删除对应元素
                map.delete(nums[i]);
            }
        }
        return resultList;
    }

    //我们可以把这两步同时进行，在一次遍历中既构建哈希表，又进行元素查找，优化代码如下：”

    function twoSumV2(nums,  target) {
        let map = new Map();
        let resultList = [];
        for (let i = 0; i < nums.length; i++) {
            let d = target - nums[i];
            if (map.has(d)) {
                resultList.push([i, map.get(d)]);
            }
            map.set(nums[i], i);
        }
        return resultList;
    }

    
    let nums = [5,12,6,3,9,2,1,7];
    let resultList = twoSumV2(nums, 12);
    console.log(resultList)
    


